/* SPDX-License-Identifier: GPL-2.0-or-later */

#pragma once
#ifdef OLED_ENABLE

// Enable OLED bitmap compression selectively.
#define USE_OLED_BITMAP_COMPRESSION

#define NUM_IDLE_FRAMES 2
#define NUM_OLED_BYTES 512

#ifdef USE_OLED_BITMAP_COMPRESSION

static const char PROGMEM idle_1_block_map[] = {
0xfc, 0xff, 0x00, 0x00, 0xf0, 0xff, 0xff, 0x7f, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xf8, 0x7f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

static const char PROGMEM idle_2_block_map[] = {
0xfc, 0xff, 0x00, 0x00, 0xfc, 0xff, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0xf8, 0x7f, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};

static const char PROGMEM idle_1_block_list[] = {
0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0x1e, 0x1e, 0xfe, 0xfe, 0xf8, 0x03, 0x03,
0x03, 0x03, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff,
0x9f, 0x9f, 0x87, 0x87, 0x81, 0x81, 0x81, 0x61, 0x61, 0x19, 0x19, 0x07, 0x07, 0x01, 0x01, 0x01,
0x01, 0x61, 0x61, 0x7f, 0x01, 0x01, 0x61, 0x61, 0x7f, 0x01, 0x01
};

static const char PROGMEM idle_2_block_list[] = {
0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf0, 0xf0, 0x3c, 0x3c, 0xfc, 0xfc, 0xf0, 0x01, 0x01,
0x07, 0x07, 0x07, 0x07, 0x07, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0x3f, 0x3f, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0xc3, 0xc3, 0x33, 0x33, 0x0f, 0x0f,
0x03, 0x03, 0x03, 0x03, 0x63, 0x63, 0x7f, 0x03, 0x03, 0x63, 0x63, 0x7f, 0x03, 0x03
};

const char* idle_frames[NUM_IDLE_FRAMES] = {
    idle_1_block_list,
    idle_2_block_list
};

const char* idle_block_map[NUM_IDLE_FRAMES] = {
    idle_1_block_map,
    idle_2_block_map
};

#else

static const char PROGMEM idle_frames[NUM_IDLE_FRAMES][NUM_OLED_BYTES] = {
    {
    0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xf8, 0xf8, 0x1e, 0x1e, 0xfe, 0xfe, 0xf8, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0x9f, 0x9f, 0x87, 0x87, 0x81, 0x81, 0x81, 0x61, 0x61, 0x19, 0x19, 0x07, 0x07, 0x01, 0x01, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x61, 0x61, 0x7f, 
    0x01, 0x01, 0x61, 0x61, 0x7f, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
    {
    0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xf0, 0xf0, 0x3c, 0x3c, 0xfc, 0xfc, 0xf0, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x01, 0x01, 0x07, 0x07, 0x07, 0x07, 0x07, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xff, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 
    0x3f, 0x3f, 0x0f, 0x0f, 0x03, 0x03, 0x03, 0xc3, 0xc3, 0x33, 0x33, 0x0f, 0x0f, 0x03, 0x03, 0x00, 
    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x03, 0x63, 0x63, 0x7f, 
    0x03, 0x03, 0x63, 0x63, 0x7f, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
    },
  };
#endif //USE_BITMAP_COMPRESSION
#endif //OLED_ENABLE
